package com.yss.reportworld.domain.rule;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import com.yss.common.core.utils.easyexecl.StringConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 映射配置对象 r_check_object_rel_mapping
 *
 * @author yss
 * @date 2023-07-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("r_check_object_rel_mapping")
public class RCheckObjectRelMapping extends Model<RCheckObjectRelMapping> {
    public static final String SHEET_NAME = "多表关联-关联条件";
    /**
     * 技术主键
     */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 关联子校验对象ID
     */
    @ExcelIgnore
    @TableField("RELATION_CHECK_OBJECT_ID")
    private String relationCheckObjectId;

    /**
     * 关联子校验对象标识
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "多表关联校验对象识别码"})
    @TableField("RELATION_CHECK_CODE")
    private String relationCheckCode;
    /**
     * 左表校验标识
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "左表校验识别码"})
    @TableField("LEFT_CHECK_CODE")
    private String leftCheckCode;
    /**
     * 左表校验对象中文描述
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "左表校验对象中文描述"})
    @TableField("LEFT_CHECK_OBJECT_DESCRIBES")
    private String leftCheckObjectDescribes;

    /**
     * 右表校验标识
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "右表校验识别码"})
    @TableField("RIGHT_CHECK_CODE")
    private String rightCheckCode;

    /**
     * 右表校验对象中文描述
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "右表校验对象中文描述"})
    @TableField("RIGHT_CHECK_OBJECT_DESCRIBES")
    private String rightCheckObjectDescribes;


    /**
     * 关联方式
     */

    @ExcelProperty(value = {"多表关联-关联条件", "关联方式"}, converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=并集,1=交集,2=左联,3=右联")
    @ColumnWidth(20)
    @TableField("TYPE")
    private Integer type;

    /**
     * 左表校验对象字段英文名
     */
    @ColumnWidth(15)
    @ExcelProperty({"多表关联-关联条件", "左表校验对象字段英文名"})
    @TableField("LEFT_FIELD_CODE")
    private String leftFieldCode;

    /**
     * 左表校验对象字段中文名
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "左表校验对象字段中文名"})
    @TableField("LEFT_FIELD_NAME")
    private String leftFieldName;


    /**
     * 右表校验对象字段英文名
     */
    @ColumnWidth(15)
    @ExcelProperty({"多表关联-关联条件", "右表校验对象字段英文名"})
    @TableField("RIGHT_FIELD_CODE")
    private String rightFieldCode;
    /**
     * 右表校验对象字段中文名
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "右表校验对象字段中文名"})
    @TableField("RIGHT_FIELD_NAME")
    private String rightFieldName;

    /**
     * 操作符
     * EQ("=", "等于");
     */
    @ExcelProperty(value = {"多表关联-过滤条件", "操作符集合"}, converter = StringConverter.class)
    @EasyExcel(type = DBOperationEnum.class)
    @ColumnWidth(15)
    @TableField("OPTIONS")
    private String options;
    /**
     * 排序
     */
    @ColumnWidth(20)
    @ExcelProperty({"多表关联-关联条件", "排序"})
    @TableField("SORT_BY")
    private Integer sortBy;


    /**
     * 左表校验对象ID
     */
    @ExcelIgnore
    @TableField("LEFT_CHECK_OBJECT_ID")
    private String leftCheckObjectId;


    /**
     * 右表校验对象ID
     */
    @ExcelIgnore
    @TableField("RIGHT_CHECK_OBJECT_ID")
    private String rightCheckObjectId;


    /**
     * 创建人
     */
    @ExcelIgnore
    @TableField("CREATE_USER")
    private String createUser;

    /**
     * 修改人
     */
    @ExcelIgnore
    @TableField("UPDATE_USER")
    private String updateUser;

    /**
     * 状态(逻辑删除状态)
     */
    @ExcelIgnore
    @TableField("STATUS")
    private Integer status;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;
}
